home *** CD-ROM | disk | FTP | other *** search
- // LISTA.H
- // (C) Julio 1994 Anubis Software
- // Librería, que simula una lista.
-
- #ifndef LISTA.H
- #define LISTA.H
-
- #include <stdlib.h>
- #include <stdio.h> // Sólo es provisional.
-
- // Definición del tipo de la lista; El tipo Tipo_elemento, debe ser declarado
- // en tiempo de compilación mediante la sentencia:
- //
- // #define Tipo_elemento <int,char,long,predefinido>
- //
- // y después, incluir el fichero LISTA.H
- //
- // #include "LISTA.H"
-
- // Definición del tipo sobre el registro de la lista.
- typedef struct Registro_de_lista {
- Tipo_elemento elemento;
- struct Registro_de_lista *siguiente;
- }Registro;
-
-
- // Definición de prototipos
- void anula (void);
- void inserta(Tipo_elemento,Registro *);
- Registro *siguiente(Registro *);
- Registro *anterior(Registro *);
- void suprime(Registro *);
- Tipo_elemento retrieve(Registro *);
- Registro *localiza(Tipo_elemento);
-
-
- // Variables de la lista
- Registro *Inicio;
- Registro *Fin;
-
- void anula(void) {
- Inicio = new Registro;
- Fin = Inicio;
- (*Inicio).siguiente = NULL;
- }
-
- void inserta(Tipo_elemento elem,Registro *rec) {
- Registro *Auxiliar;
- Auxiliar= (*rec).siguiente;
- (*rec).siguiente = new Registro;
- (*((*rec).siguiente)).siguiente = Auxiliar;
- ((*rec).siguiente)->elemento = elem;
- if (rec == Fin)
- Fin=(*rec).siguiente;
- }
-
- void suprime(Registro *rec) {
- (*rec).siguiente = (*((*rec).siguiente)).siguiente;
- delete rec;
- }
-
- Registro *siguiente(Registro *rec) {
- if (rec == Fin)
- exit(0);
- return( (*rec).siguiente );
- }
-
- Registro *anterior(Registro *rec) {
- Registro *Auxiliar;
- if (rec == Inicio)
- exit(0);
- Auxiliar = Inicio;
- while ( (*Auxiliar).siguiente != rec)
- Auxiliar = siguiente(Auxiliar);
- return(Auxiliar);
- }
-
- Tipo_elemento retrieve(Registro *rec) {
- return( (*((*rec).siguiente)).elemento );
- }
-
- Registro *localiza(Tipo_elemento elem) {
- Registro *Auxiliar;
- Auxiliar = Inicio;
- while( (retrieve(Auxiliar) != elem) && (Auxiliar != Fin) )
- Auxiliar = siguiente(Auxiliar);
- return(Auxiliar);
- }
-
-
-
- #endif